Various interfaces have been designed to facilitate data exchange between a host computer and peripheral devices, such as keyboards, scanners, and printers. One common bus-based interface is the Universal Serial Bus (USB), which is a polled bus in which the attached peripherals share bus bandwidth through a host-scheduled, token-based protocol. The bus allows peripheral devices to be attached, configured, used, and detached while the host and other peripheral devices are operating.
USB transactions are scheduled by host software to communicate with downstream devices that are attached to the host. Periodic transactions, such as isochronous transfers with USB speakers or interrupt transfers with USB keyboards, have strict timing requirements. Thus, periodic transactions need to move across the bus in a timely manner. Non-periodic transactions, such as bulk transfers with USB printers or control transfers for device configuration, do not have strict timing requirements.
The host software traditionally predetermines the dispatch schedule for scheduled periodic traffic. For example, the host software may generate a preordered time domain list, such as an enhanced host controller interface (EHCI) frame list, for periodic traffic. The predetermined dispatch schedule is typically calculated or recalculated if there is a change to the number of periodic data pipelines in the system tree structure, which may interrupt periodic streaming data. Moreover, a preordered time domain list can only effectively direct the scheduling of a single composite speed. For a large number of ports, multiple preordered time domain lists are complex to create, store, and manage.